use [Comunarte] 
go


----- Usuario
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_ExisteMail') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_ExisteMail
GO

CREATE PROCEDURE [dbo].[Usuario_ExisteMail]
	@mail varchar(50)
AS
BEGIN
	SELECT id_usuario FROM Usuario WHERE mail = @mail
END
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_InsertarUsuario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_InsertarUsuario
GO

CREATE PROCEDURE [dbo].[Usuario_InsertarUsuario]
	@nombre varchar(50),
	@apellido varchar(50), 
	@tipo_usuario_id int,
	@mail varchar(50),
	@pass varchar(15)
AS
BEGIN
	INSERT INTO Usuario (nombre, apellido, tipo_usuario_id, mail, pass)
	VALUES (@nombre, @apellido, @tipo_usuario_id, @mail, @pass)
END
GO

---- Usuario_InsertarUsuarioTwitter

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_InsertarUsuarioTwitter') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_InsertarUsuarioTwitter
GO

CREATE PROCEDURE [dbo].[Usuario_InsertarUsuarioTwitter]
	@nombre varchar(50),
	@userKey varchar(200),
	@userSecret varchar(200),
	@urlFoto varchar(100),
	@twitterIdentification decimal
AS
BEGIN
	INSERT INTO Usuario (nombre,id_twitter,id_twitter_secret, tipo_usuario_id, url_foto_perfil, twitterIdentification)
	VALUES (@nombre, @userKey, @userSecret, (SELECT id_tipo_usuario from Tipo_Usuario where desc_tipo_usuario = 'Usuario de Twitter'), @urlFoto, @twitterIdentification)
END
GO

---- Usuario_ActualizarUsuarioTwitter

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_ActualizarUsuarioTwitter') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_ActualizarUsuarioTwitter
GO

CREATE PROCEDURE [dbo].[Usuario_ActualizarUsuarioTwitter]
	@id int,
	@urlFoto varchar(100)
AS
BEGIN
	UPDATE Usuario SET url_foto_perfil = @urlFoto WHERE id_usuario = @id
END
GO

---- Usuario_ObtenerUsuarioTwitter

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_ObtenerUsuarioTwitter') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_ObtenerUsuarioTwitter
GO

CREATE PROCEDURE [dbo].[Usuario_ObtenerUsuarioTwitter]
	@userKey varchar(200),
	@userSecret varchar(200)

AS
BEGIN
	SELECT * FROM Usuario WHERE id_twitter = @userKey AND id_twitter_secret = @userSecret
END
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_GetIdUsuarioFromFacebookId') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_GetIdUsuarioFromFacebookId
GO

CREATE PROCEDURE [dbo].[Usuario_GetIdUsuarioFromFacebookId]
	@id_facebook varchar(50)
AS
BEGIN
	SELECT id_usuario FROM Usuario WHERE id_facebook = @id_facebook
END
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_GetIdUsuarioFromGMailId') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_GetIdUsuarioFromGMailId
GO

CREATE PROCEDURE [dbo].[Usuario_GetIdUsuarioFromGMailId]
	@id_gmail varchar(200)
AS
BEGIN
	SELECT id_usuario FROM Usuario WHERE id_gmail = @id_gmail
END
GO


IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_InsertarUsuarioDeFacebook') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_InsertarUsuarioDeFacebook
GO

CREATE PROCEDURE [dbo].[Usuario_InsertarUsuarioDeFacebook]
	@nombre varchar(50),
	@apellido varchar(50),
	@mail varchar(50),
	@id_facebook varchar(50)
AS
BEGIN
	INSERT INTO Usuario (nombre, apellido, tipo_usuario_id, mail, id_facebook)
	VALUES (@nombre, @apellido, 1, @mail, @id_facebook)
END
GO
-------------
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_InsertarUsuarioDeGMail') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_InsertarUsuarioDeGMail
GO

CREATE PROCEDURE [dbo].[Usuario_InsertarUsuarioDeGMail]
	@nombre varchar(50),
	@apellido varchar(50),
	@mail varchar(50),
	@id_gmail varchar(200)
AS
BEGIN
	INSERT INTO Usuario (nombre, apellido, tipo_usuario_id, mail, id_gmail)
	VALUES (@nombre, @apellido, 1, @mail, @id_gmail)
END
GO




IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_GetUsuariosNoSigue') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_GetUsuariosNoSigue
GO

CREATE PROCEDURE [dbo].[Usuario_GetUsuariosNoSigue]
	@idUsuario int,
	@datosUsuario varchar(50),
	@buscarArtistas bit,
	@buscarEspectadores bit
AS
BEGIN
	IF((@buscarArtistas = 1 AND @buscarEspectadores = 1) OR (@buscarArtistas = 0 AND @buscarEspectadores = 0))
	BEGIN
		SELECT
			Usuario.id_usuario,
			Usuario.nombre + ' ' + ISNULL(Usuario.apellido, '') AS nombre_apellido,
			Tipo_Usuario.desc_tipo_usuario
		FROM Usuario
			INNER JOIN Tipo_Usuario ON Tipo_Usuario.id_tipo_usuario = Usuario.tipo_usuario_id
		WHERE 
			Usuario.id_usuario <> @idUsuario AND
			Usuario.id_usuario NOT IN (SELECT Contacto.seguido_id 
									   FROM Contacto
									   WHERE Contacto.seguidor_id = @idUsuario) AND
			(Usuario.nombre   LIKE '%' + @datosUsuario + '%' OR 
			 Usuario.apellido LIKE '%' + @datosUsuario + '%' OR
			 Usuario.mail     LIKE '%' + @datosUsuario + '%' OR
			 Usuario.nombre + ' ' + Usuario.apellido LIKE '%' + @datosUsuario + '%')
	END
	ELSE IF(@buscarEspectadores = 1)
	BEGIN
		SELECT
			Usuario.id_usuario,
			Usuario.nombre + ' ' + ISNULL(Usuario.apellido, '') AS nombre_apellido,
			Tipo_Usuario.desc_tipo_usuario
		FROM Usuario
			INNER JOIN Tipo_Usuario ON Tipo_Usuario.id_tipo_usuario = Usuario.tipo_usuario_id
		WHERE 
			Usuario.id_usuario <> @idUsuario AND
			Usuario.id_usuario NOT IN (SELECT Contacto.seguido_id 
									   FROM Contacto
									   WHERE Contacto.seguidor_id = @idUsuario) AND
			(Usuario.nombre   LIKE '%' + @datosUsuario + '%' OR 
			 Usuario.apellido LIKE '%' + @datosUsuario + '%' OR
			 Usuario.mail     LIKE '%' + @datosUsuario + '%' OR
			 Usuario.nombre + ' ' + Usuario.apellido LIKE '%' + @datosUsuario + '%') AND
			Usuario.tipo_usuario_id = 1
	END
	ELSE IF(@buscarArtistas = 1)
	BEGIN
		SELECT
			Usuario.id_usuario,
			Usuario.nombre + ' ' + ISNULL(Usuario.apellido, '') AS nombre_apellido,
			Tipo_Usuario.desc_tipo_usuario
		FROM Usuario
			INNER JOIN Tipo_Usuario ON Tipo_Usuario.id_tipo_usuario = Usuario.tipo_usuario_id
		WHERE 
			Usuario.id_usuario <> @idUsuario AND
			Usuario.id_usuario NOT IN (SELECT Contacto.seguido_id 
									   FROM Contacto
									   WHERE Contacto.seguidor_id = @idUsuario) AND
			(Usuario.nombre   LIKE '%' + @datosUsuario + '%' OR 
			 Usuario.apellido LIKE '%' + @datosUsuario + '%' OR
			 Usuario.mail     LIKE '%' + @datosUsuario + '%' OR
			 Usuario.nombre + ' ' + Usuario.apellido LIKE '%' + @datosUsuario + '%') AND
			Usuario.tipo_usuario_id = 2
	END
END
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_GetNombre') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_GetNombre
GO

CREATE PROCEDURE [dbo].[Usuario_GetNombre]
	@id_usuario int
AS
BEGIN
	SELECT Usuario.nombre + ' ' + ISNULL(Usuario.apellido, '') AS nombre_apellido 
	FROM Usuario 
	WHERE id_usuario = @id_usuario
END
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_SaveUrlPhotoPerfil') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_SaveUrlPhotoPerfil
GO

CREATE PROCEDURE [dbo].[Usuario_SaveUrlPhotoPerfil]
	@id_usuario int,
	@url_foto_perfil varchar(max)
AS
BEGIN
	UPDATE Usuario
	SET url_foto_perfil = @url_foto_perfil
	WHERE id_usuario = @id_usuario
END
GO

-- Login
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_LogIn') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_LogIn
GO

CREATE PROCEDURE [dbo].[Usuario_LogIn]
	@mail varchar(50),
	@pass varchar(15)
AS
BEGIN
	SELECT id_usuario
	FROM Usuario
	WHERE 
		mail = @mail AND
		pass = @pass	
END
GO

------ Post
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Post_InsertarPost') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Post_InsertarPost
GO

CREATE PROCEDURE [dbo].[Post_InsertarPost]
	@titulo_post varchar(50),
	@text_post varchar(MAX),
	@usuario_id int,
	@categoria_post_id int
AS
BEGIN
	INSERT INTO Post (titulo_post, text_post, usuario_id, categoria_post_id, fecha_creacion, fecha_modificacion)
	VALUES (@titulo_post, @text_post, @usuario_id, @categoria_post_id, GETDATE(), GETDATE())
END
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Post_GetIdPostCreado') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Post_GetIdPostCreado
GO

CREATE PROCEDURE [dbo].[Post_GetIdPostCreado]
AS
BEGIN
	SELECT id_post FROM Post WHERE id_post = @@Identity;
END
GO


IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Post_EliminarPost') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Post_EliminarPost
GO

CREATE PROCEDURE [dbo].[Post_EliminarPost]
	@postid int
AS
BEGIN
	DELETE FROM Bancar WHERE post_id = @postid;
	DELETE FROM Notificacion WHERE post_id = @postid;
	DELETE FROM Post WHERE Post.id_post = @postid;
END
GO




---- Comentario
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Comentario_InsertarComentario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Comentario_InsertarComentario
GO

CREATE PROCEDURE [dbo].[Comentario_InsertarComentario]
	@usuario_id int,
	@texto_comentario varchar(MAX),
	@post_id int
AS
BEGIN
	INSERT INTO Comentario (usuario_id, texto_comentario, post_id)
	VALUES (@usuario_id, @texto_comentario, @post_id)
END
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Comentario_GetComentarioIngresado') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Comentario_GetComentarioIngresado
GO

CREATE PROCEDURE [dbo].[Comentario_GetComentarioIngresado]
AS
BEGIN
	SELECT 
		Comentario.id_comentario, 
		Comentario.post_id, 
		Comentario.usuario_id, 
		Comentario.texto_comentario,
		Usuario.url_foto_perfil,
		Usuario.nombre,
		Usuario.apellido
	FROM Comentario
		INNER JOIN Usuario ON Usuario.id_usuario = Comentario.usuario_id
	WHERE id_comentario = @@Identity;
END
GO

---- Comentario_BorrarComentario

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Comentario_BorrarComentario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Comentario_BorrarComentario
GO

CREATE PROCEDURE [dbo].[Comentario_BorrarComentario]
		@id int
AS
BEGIN
	DELETE FROM Bancar WHERE comentario_id = @id;
	DELETE FROM Comentario WHERE id_comentario = @id;
END
GO

---- Categoria_Post
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('CategoriaPost_ObtenerCategoriaPost') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE CategoriaPost_ObtenerCategoriaPost
GO

CREATE PROCEDURE [dbo].[CategoriaPost_ObtenerCategoriaPost]
AS
BEGIN
	SELECT *
	FROM Categoria_Post
END
GO

---- Tipo_Usuario
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('TipoUsuario_ObtenerTipoUsuario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE TipoUsuario_ObtenerTipoUsuario
GO

CREATE PROCEDURE [dbo].[TipoUsuario_ObtenerTipoUsuario]
AS
BEGIN
	SELECT *
	FROM Tipo_Usuario
END
GO

---- TipoUsuario_Buscar

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('TipoUsuario_Buscar') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE TipoUsuario_Buscar
GO

CREATE PROCEDURE [dbo].[TipoUsuario_Buscar]
	@id int
AS
BEGIN
	SELECT *
	FROM Tipo_Usuario WHERE id_tipo_usuario = @id
END
GO

---- TipoUsuario_BuscarPorDescripcion

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('TipoUsuario_BuscarPorDescripcion') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE TipoUsuario_BuscarPorDescripcion
GO

CREATE PROCEDURE [dbo].[TipoUsuario_BuscarPorDescripcion]
	@descripcion varchar(30)
AS
BEGIN
	SELECT *
	FROM Tipo_Usuario
	WHERE desc_tipo_usuario = @descripcion
END
GO

---- Post_ObtenerPostsRelacionadosAUsuario
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Post_PostsRelacionadosAUsuario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Post_PostsRelacionadosAUsuario
GO

CREATE PROCEDURE [dbo].[Post_PostsRelacionadosAUsuario]
	@idUsuario int
AS
BEGIN
	

	SELECT p.titulo_post AS 'titulo_post', p.id_post AS 'id_post', p.text_post AS 'text_post', p.usuario_id AS 'usuario_id', p.categoria_post_id, p.fecha_modificacion FROM Post p 
	INNER JOIN Contacto c on c.seguido_id = p.usuario_id 
		WHERE c.seguidor_id = @idUsuario 
			ORDER BY p.id_post DESC
END
GO

---- Contacto_NewContacto
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Contacto_NewContacto') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Contacto_NewContacto
GO

CREATE PROCEDURE [dbo].[Contacto_NewContacto]
	@idUsuarioSeguidor int,
	@idUsuarioSeguido int
AS
BEGIN
	INSERT INTO Contacto(seguidor_id, seguido_id, fecha)
	VALUES(@idUsuarioSeguidor, @idUsuarioSeguido, GETDATE())	
END
GO


---- Post_BucarPostPorId

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Post_BuscarPostPorId') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Post_BuscarPostPorId
GO

CREATE PROCEDURE [dbo].[Post_BuscarPostPorId]
	@idPost int
AS
BEGIN
	SELECT * FROM Post WHERE id_post=@idPost
END
GO

---- Usuario_BucarUsuarioPorId

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_BucarUsuarioPorId') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_BucarUsuarioPorId
GO

CREATE PROCEDURE [dbo].[Usuario_BucarUsuarioPorId]
	@idUsuario int
AS
BEGIN
	SELECT * FROM Usuario WHERE id_usuario=@idUsuario
END
GO

---- Usuario_BuscarContactos

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Usuario_BuscarContactos') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Usuario_BuscarContactos
GO

CREATE PROCEDURE [dbo].[Usuario_BuscarContactos]
	@idUsuario int
AS
BEGIN
	SELECT * FROM Usuario u INNER JOIN Contacto c on u.id_usuario = c.seguido_id WHERE c.seguidor_id = @idUsuario
END
GO

---- Usuario_BuscarPostDeUsuario

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Post_BuscarPostDelUsuario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Post_BuscarPostDelUsuario
GO

CREATE PROCEDURE [dbo].[Post_BuscarPostDelUsuario]
	@idUsuario int
AS
BEGIN
	SELECT * FROM Post WHERE usuario_id = @idUsuario
END
GO

---- Comentario_BuscarComentarioPorId

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Comentario_BuscarComentarioPorId') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Comentario_BuscarComentarioPorId
GO

CREATE PROCEDURE [dbo].[Comentario_BuscarComentarioPorId]
	@idComentario int
AS
BEGIN
	SELECT 
		Comentario.id_comentario, 
		Comentario.post_id, 
		Comentario.usuario_id, 
		Comentario.texto_comentario,
		Usuario.url_foto_perfil,
		Usuario.nombre,
		Usuario.apellido
	FROM Comentario
		INNER JOIN Usuario ON Usuario.id_usuario = Comentario.usuario_id
	WHERE id_comentario=@idComentario
END
GO

---- Comentario_BuscarComentarioPorIdPost

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Comentario_BuscarComentarioPorIdPost') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Comentario_BuscarComentarioPorIdPost
GO

CREATE PROCEDURE [dbo].[Comentario_BuscarComentarioPorIdPost]
	@idPost int
AS
BEGIN
	SELECT 
		Comentario.id_comentario, 
		Comentario.post_id, 
		Comentario.usuario_id, 
		Comentario.texto_comentario,
		Usuario.url_foto_perfil,
		Usuario.nombre,
		Usuario.apellido
	FROM Comentario
		INNER JOIN Usuario ON Usuario.id_usuario = Comentario.usuario_id
	WHERE post_id=@idPost
END
GO

---- Foto_InsertarFoto

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Foto_InsertarFoto') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Foto_InsertarFoto
GO

CREATE PROCEDURE [dbo].[Foto_InsertarFoto]
	@url_foto varchar(max),
	@usuario_id int,
	@descripcion_foto varchar(max)
AS
BEGIN
	INSERT INTO Foto(url_foto, usuario_id, descripcion_foto)
	VALUES(@url_foto, @usuario_id, @descripcion_foto)
END
GO

---- Foto_GetFoto

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Foto_GetFoto') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Foto_GetFoto
GO

CREATE PROCEDURE [dbo].[Foto_GetFoto]
	@usuario_id int,
	@index_foto int
AS
BEGIN
	SELECT index_foto, id_foto, url_foto, usuario_id, descripcion_foto
	FROM
		(SELECT 
			ROW_NUMBER() OVER(ORDER BY id_foto) AS index_foto,
			* 
		FROM foto
		WHERE usuario_id = @usuario_id) AS foto_user
	WHERE foto_user.index_foto = @index_foto
END
GO

---- Foto_GetcantidadFotosUsuario

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Foto_GetcantidadFotosUsuario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Foto_GetcantidadFotosUsuario
GO

CREATE PROCEDURE [dbo].[Foto_GetcantidadFotosUsuario]
	@usuario_id int
AS
BEGIN
	SELECT COUNT(id_foto) AS cantidad 
	FROM Foto
	WHERE usuario_id = @usuario_id
END
GO

---- Notificacion_InsertarNotificacionSeguimiento
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Notificacion_InsertarNotificacionSeguimiento') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Notificacion_InsertarNotificacionSeguimiento
GO

CREATE PROCEDURE [dbo].[Notificacion_InsertarNotificacionSeguimiento]
	@usuarioSeguido int,
	@usuarioSeguidor int
AS
BEGIN
	DECLARE @idNotificacion int;
	
	INSERT INTO Notificacion(usuario_id, codigo_evento)
	VALUES (@usuarioSeguidor, 'EVENTO_SEGUIMIENTO');
	
	SET @idNotificacion = @@IDENTITY;
	
	INSERT INTO Notificacion_Notificado(leida, notificacion_id, notificado_id)
	VALUES (0, @idNotificacion, @usuarioSeguido);
END
GO

---- Notificacion_InsertarNotificacionComentario
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Notificacion_InsertarNotificacionComentario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Notificacion_InsertarNotificacionComentario
GO

CREATE PROCEDURE [dbo].[Notificacion_InsertarNotificacionComentario]
	@postId int,
	@notificador int
AS
BEGIN
	DECLARE @idNotificacion int;
	
	INSERT INTO Notificacion(usuario_id, post_id, codigo_evento)
	VALUES (@notificador, @postId, 'EVENTO_COMENTARIO');
	
	SET @idNotificacion = @@IDENTITY;

	INSERT INTO Notificacion_Notificado(leida, notificacion_id, notificado_id)
	SELECT DISTINCT 0, @idNotificacion, u.id_usuario from Usuario u inner join 
	Comentario c on u.id_usuario=c.usuario_id inner join
	Post p on c.post_id = p.id_post where p.id_post = @postId AND NOT (p.usuario_id = u.id_usuario) AND NOT (u.id_usuario = @notificador);

	INSERT INTO Notificacion_Notificado(leida, notificacion_id, notificado_id)
	SELECT 0, @idNotificacion, usuario_id FROM Post WHERE id_post = @postId AND NOT (usuario_id = @notificador);
END
GO

---- Notificacion_BuscarNotificacionesUsuario

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Notificacion_BuscarNotificacionesUsuario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Notificacion_BuscarNotificacionesUsuario
GO

CREATE PROCEDURE [dbo].[Notificacion_BuscarNotificacionesUsuario]
	@usuario_id int,
	@cantidad int
AS
BEGIN
	SELECT TOP (@cantidad) n.*, nn.leida, nn.notificado_id FROM Notificacion n inner join
	Notificacion_Notificado nn ON n.id_notificacion = nn.notificacion_id
	WHERE nn.notificado_id = @usuario_id ORDER BY n.id_notificacion DESC
END
GO

---- Notificacion_ContarNotificacionesNoLeidas

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Notificacion_ContarNotificacionesNoLeidas') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Notificacion_ContarNotificacionesNoLeidas
GO

CREATE PROCEDURE [dbo].[Notificacion_ContarNotificacionesNoLeidas]
	@usuario_id int
AS
BEGIN
	SELECT COUNT(*) AS cantidad FROM Notificacion n inner join
	Notificacion_Notificado nn ON n.id_notificacion = nn.notificacion_id
	WHERE nn.notificado_id = @usuario_id AND nn.leida = 0
END
GO

---- Notificacion_MarcarLeidaUsuario

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Notificacion_MarcarLeidaUsuario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Notificacion_MarcarLeidaUsuario
GO

CREATE PROCEDURE [dbo].[Notificacion_MarcarLeidaUsuario]
	@idNotificacion int,
	@idNotificado int
AS
BEGIN
	UPDATE Notificacion_Notificado SET leida = 1 WHERE notificacion_id = @idNotificacion AND notificado_id = @idNotificado
END
GO

---- Bancar_BancarPost

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_BancarPost') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_BancarPost
GO

CREATE PROCEDURE [dbo].[Bancar_BancarPost]
	@idUsuario int,
	@idPost int
AS
BEGIN
	INSERT INTO Bancar (post_id, usuario_id)
	VALUES (@idPost, @idUsuario)
END
GO

---- Bancar_BancarComentario

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_BancarComentario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_BancarComentario
GO

CREATE PROCEDURE [dbo].[Bancar_BancarComentario]
	@idUsuario int,
	@idComentario int
AS
BEGIN
	INSERT INTO Bancar (comentario_id, usuario_id)
	VALUES (@idComentario, @idUsuario)
END
GO

---- Bancar_BancarFoto

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_BancarFoto') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_BancarFoto
GO

CREATE PROCEDURE [dbo].[Bancar_BancarFoto]
	@idUsuario int,
	@idFoto int
AS
BEGIN
	INSERT INTO Bancar (foto_id, usuario_id)
	VALUES (@idFoto, @idUsuario)
END
GO

---- Bancar_ContarBancarPost
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_ContarBancarPost') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_ContarBancarPost
GO

CREATE PROCEDURE [dbo].[Bancar_ContarBancarPost]
	@idPost int
AS
BEGIN
	SELECT count(*) as cantidad FROM Bancar WHERE post_id = @idPost
END
GO

---- Bancar_ContarBancarComentario
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_ContarBancarComentario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_ContarBancarComentario
GO

CREATE PROCEDURE [dbo].[Bancar_ContarBancarComentario]
	@idComentario int
AS
BEGIN
	SELECT count(*) as cantidad FROM Bancar WHERE comentario_id = @idComentario
END
GO

---- Bancar_ContarBancarFoto
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_ContarBancarFoto') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_ContarBancarFoto
GO

CREATE PROCEDURE [dbo].[Bancar_ContarBancarFoto]
	@idFoto int
AS
BEGIN
	SELECT count(*) as cantidad FROM Bancar WHERE foto_id = @idFoto
END
GO

---- Bancar_TraerBancadoresPost
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_TraerBancadoresPost') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_TraerBancadoresPost
GO

CREATE PROCEDURE [dbo].[Bancar_TraerBancadoresPost]
	@idPost int
AS
BEGIN
	SELECT u.* FROM Bancar b INNER JOIN Usuario u ON b.usuario_id = u.id_usuario WHERE b.post_id = @idPost
END
GO

---- Bancar_TraerBancadoresComentario
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_TraerBancadoresComentario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_TraerBancadoresComentario
GO

CREATE PROCEDURE [dbo].[Bancar_TraerBancadoresComentario]
	@idComentario int
AS
BEGIN
	SELECT u.* FROM Bancar b INNER JOIN Usuario u ON b.usuario_id = u.id_usuario WHERE b.comentario_id = @idComentario
END
GO

---- Bancar_TraerBancadoresFoto
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_TraerBancadoresFoto') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_TraerBancadoresFoto
GO

CREATE PROCEDURE [dbo].[Bancar_TraerBancadoresFoto]
	@idFoto int
AS
BEGIN
	SELECT u.* FROM Bancar b INNER JOIN Usuario u ON b.usuario_id = u.id_usuario WHERE b.foto_id = @idFoto
END
GO

---- Bancar_UsuarioBancandoPost
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_UsuarioBancandoPost') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_UsuarioBancandoPost
GO

CREATE PROCEDURE [dbo].[Bancar_UsuarioBancandoPost]
	@idUsuario int,
	@idPost int
AS
BEGIN
	select usuario_id from Bancar where post_id = @idPost and usuario_id = @idUsuario
END
GO

---- Bancar_UsuarioBancandoFoto
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_UsuarioBancandoFoto') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_UsuarioBancandoFoto
GO

CREATE PROCEDURE [dbo].[Bancar_UsuarioBancandoFoto]
	@idUsuario int,
	@idFoto int
AS
BEGIN
	select usuario_id from Bancar where foto_id = @idFoto and usuario_id = @idUsuario
END
GO

---- Bancar_UsuarioBancandoComentario
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_UsuarioBancandoComentario') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_UsuarioBancandoComentario
GO

CREATE PROCEDURE [dbo].[Bancar_UsuarioBancandoComentario]
	@idUsuario int,
	@idComentario int
AS
BEGIN
	select usuario_id from Bancar where comentario_id = @idComentario and usuario_id = @idUsuario
END
GO

---- Bancar_TopTenIdPostMasBancado
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id('Bancar_TopTenIdPostMasBancado') AND  OBJECTPROPERTY(id, 'IsProcedure') = 1)
DROP PROCEDURE Bancar_TopTenIdPostMasBancado
GO

CREATE PROCEDURE [dbo].[Bancar_TopTenIdPostMasBancado]
AS
BEGIN
	select top 10 post_id, COUNT(post_id) as cantidad from Bancar group by post_id order by cantidad desc
END
GO
